home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / silib / inc / dlg / dlglst.h next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  5.9 KB  |  223 lines

  1. #ifndef    _DLG_DLGLST_H
  2. #define    _DLG_DLGLST_H
  3.  
  4. #ifndef    _SIDLG_H
  5. #    include    <sidlg.h>
  6. #endif
  7. #ifndef    _SIMNU_H
  8. #    include    <simnu.h>
  9. #endif
  10. #ifndef    _SISBAR_H
  11. #    include    <sisbar.h>
  12. #endif
  13.  
  14. typedef struct _dlglst_dat_t    /* データ構造体    */
  15. {
  16.     struct _dlglst_dat_t   *next, *prev;
  17.     unsigned int            att;        /* 属性    */
  18.     unsigned int            stt;        /* 状態    */
  19.     FRAME_T                    fr;            /* 表示用ワーク            */
  20.  
  21.     short                    xs ,ys;        /* 大きさ                */
  22.     short                    xsLm, xsRm;    /* 左右マージンドット数    */
  23.     unsigned short            ch;
  24.     unsigned short            ec;
  25.     FTSDAT_T               *fts;        /* フォント                */
  26.     char                   *msg;        /* メッセージ            */
  27.     IMGBLK_T              *putptn;        /* 表示パターンデータ    */
  28.     int                      (*dspfunc)();    /* ユーザー表示関数        */
  29.     int                      (*evfunc)();    /* ユーザーイベント関数    */
  30.     int                        evno;
  31.     void                   *ptr;        /* 汎用ポインタ            */
  32. } DLGLST_DAT_T;
  33.  
  34. #define    DLGLSTDAT_ATT_BTN        (0x0000_0001)    /* ボタンタイプ        */
  35. #define    DLGLSTDAT_ATT_CENTER    (0x0001_0000)    /* センタリング表示    */
  36. #define    DLGLSTDAT_ATT_MASTER    (0x0000_0100)    /* マスターデータ    */
  37. #define    DLGLSTDAT_ATT_EVMOS        (0x0000_0100)    /* マウスベンイト    */
  38. #define    DLGLSTDAT_ATT_EVKEY        (0x0000_0200)    /* キーベンイト        */
  39.  
  40. typedef struct _dlglst_lin_t    /* 行データ構造体    */
  41. {
  42.     struct _dlglst_lin_t   *next, *prev;
  43.  
  44.     int                        no;            /* 番号            */
  45.     unsigned char            mark;        /* マーク        */
  46.     unsigned char            att;
  47.     unsigned short            stt;
  48.  
  49.     int                        numDat;        /* データ数        */
  50.     DLGLST_DAT_T           *datTop;
  51.     DLGLST_DAT_T           *datLast;
  52.     int                        xs, ys;        /* 総ドット数    */
  53.  
  54.     unsigned short            ch;
  55.     unsigned short            ec;
  56.  
  57.     int                      (*func)();    /* ユーザー関数    */
  58.     int                        evno;        /* イベント番号    */
  59.     void                   *ptr;        /* 汎用ポインタ    */
  60. } DLGLST_LIN_T;
  61.  
  62. typedef struct _dlglst_btn_t        /* ボタンデータ構造体    */
  63. {
  64.     struct _dlglst_btn_t    *next;
  65.  
  66.     unsigned int            att;        /* 属性    */
  67.     unsigned int            stt;        /* 状態    */
  68.     FRAME_T                    fr;            /* 表示用ワーク            */
  69.  
  70.     short                    xs ,ys;        /* 大きさ                */
  71.     unsigned short            ch;
  72.     unsigned short            ec;
  73.     FTSDAT_T               *fts;        /* フォント                */
  74.     char                   *msg;        /* メッセージ            */
  75.     int                      (*evfunc)();    /* ユーザーイベント関数    */
  76.     int                        evno;
  77.     void                   *ptr;        /* 汎用ポインタ            */
  78. } DLGLST_BTN_T;
  79.  
  80. typedef struct    /* カラーテーブル    */
  81. {
  82.     COLOR_T        dlgBase;
  83.     COLOR_T        dlgHil;
  84.     COLOR_T        dlgSha;
  85.  
  86.     COLOR_T        ttlBac;
  87.     COLOR_T        ttlCha;
  88.     COLOR_T        ttlHil;
  89.     COLOR_T        ttlSha;
  90.  
  91.     COLOR_T        btnBac;
  92.     COLOR_T        btnCha;
  93.     COLOR_T        btnHil;
  94.     COLOR_T        btnSha;
  95.  
  96.     COLOR_T        msgCha;
  97.     COLOR_T        msgBac;
  98.  
  99.     COLOR_T        scnBac;
  100.     COLOR_T        scnCha;
  101.     COLOR_T        scnHil;
  102.     COLOR_T        scnSha;
  103.     COLOR_T        scnLin;
  104.     COLOR_T        scnCrb;        /* カーソル位置            */
  105.     COLOR_T        scnCrc;
  106.     COLOR_T        scnMkb;        /* マーク時                */
  107.     COLOR_T        scnMkc;
  108.  
  109.     COLOR_T        sboBac;        /* スクリーンボタン        */
  110.     COLOR_T        sboCha;        /* 文字                    */
  111.     COLOR_T        sboHil;
  112.     COLOR_T        sboSha;
  113.     COLOR_T        sboMkb;        /* マーク時バック        */
  114.     COLOR_T        sboMkc;        /* マーク時文字            */
  115.     COLOR_T        sboCrb;        /* カーソル位置バック    */
  116.     COLOR_T        sboCrc;        /* カーソル位置文字        */
  117.  
  118.     COLOR_T        curCha;        /* カーソル                */
  119.     COLOR_T        curBac;        /* カールルバック        */
  120.  
  121.     COLOR_T        clcBac;        /* クリック反転色        */
  122.     COLOR_T        clcCha;        /* クリック反転色        */
  123. } DLGLST_COL_T;
  124.  
  125. typedef struct
  126. {
  127.     unsigned int            att;
  128.     unsigned int            stt;
  129.  
  130.     EV_T                   *ev;
  131.  
  132.     struct                                /* レフトボタン(クローズ)    */
  133.     {
  134.         FRAME_T                fr;
  135.         int                   (*func)(DLG_T *);    /* クローズチェック関数    */
  136.     } lbtn;
  137.  
  138.     struct                                /* タイトル    */
  139.     {
  140.         FRAME_T                fr;
  141.         FTSDAT_T           *fts;
  142.         int                    xs, ys;
  143.         char               *msg;
  144.     } ttl;            
  145.  
  146.     struct                                /* メニューバー    */
  147.     {
  148.         FRAME_T                fr;
  149.         MBAR_T               *mbar;        /* メニューバー    */
  150.     } menu;
  151.  
  152.     struct                                /* ボタンリスト    */
  153.     {
  154.         EV_T               *ev;            /* イベント        */
  155.         int                    ntmBtn;        /* ボタン数        */
  156.         DLGLST_BTN_T       *btnTop;
  157.         DLGLST_BTN_T       *btnLast;
  158.     } btn;
  159.  
  160.     struct                                /* メッセージ(上部)    */
  161.     {
  162.         FRAME_T                fr;
  163.         FTSDAT_T           *fts;
  164.         char               *msg;
  165.     } tms;
  166.  
  167.     struct                                /* メッセージ(下部)    */
  168.     {
  169.         FRAME_T                fr;
  170.         FTSDAT_T           *fts;
  171.         char               *msg;
  172.     } bms;
  173.  
  174.     struct                                /* スクリーン        */
  175.     {
  176.         EV_T               *ev;
  177.         SB_T               *sb;            /* スクロールバー        */
  178.         int                    xs, ys;        /* スクリーンの大きさ    */
  179.         int                    ysLin;        /* 1行の縦ドット数        */
  180.         int                    numDsp;        /* 表示可能行数            */
  181.         int                    ofsDsp;        /* 表示オフセット        */
  182.         int                    posCur;        /* カーソル                */
  183.         FRAME_T                fr;
  184.     } scn;
  185.  
  186.     int                        numLin;
  187.     DLGLST_LIN_T           *linTop;
  188.     DLGLST_LIN_T           *linLast;
  189.     DLGLST_LIN_T          **linTbl;
  190.  
  191.     DLGLST_COL_T            col;
  192.     DLG_T                   *dlg;
  193. } DLGLST_T;
  194.  
  195. #define    DLGLST_ATT_IGN_RIGHTCLICK_CANCEL    (0x0000_0001)    /* 右クリッククローズを禁止    */
  196. #define    DLGLST_ATT_IGN_ESCKEY_CANCEL        (0x0000_0002)    /* [ESC]キーでクローズ禁止    */
  197. #define    DLGLST_ATT_CUROFF    (0x0001_0000)    /* カーソル禁止        */
  198. #define    DLGLST_ATT_MULTI    (0x0002_0000)    /* 複数選択モード    */
  199. #define    DLGLST_ATT_DEL        (0x0004_0000)    /* 削除可能            */
  200. #define    DLGLST_ATT_APPEND    (0x0008_0000)    /* 追加可能            */
  201. #define    DLGLST_ATT_COPY        (0x0010_0000)    /* 複写可能            */
  202. #define    DLGLST_ATT_SORT        (0x0020_0000)    /* 並べ替え可能        */
  203.  
  204. extern DLG_T       *DLG_lst_open(void *ptr);
  205. extern void            DLG_lst_close(DLG_T *dlg);
  206. extern int            DLG_lst_setTtl( DLG_T *dlg, FTSDAT_T *fts, CONST char *form, ... );
  207. extern int            DLG_lst_setTopMsg( DLG_T *dlg, FTSDAT_T *fts, CONST char *form, ... );
  208. extern int            DLG_lst_setBottomMsg( DLG_T *dlg, FTSDAT_T *fts, CONST char *form, ... );
  209. extern int            DLG_set_setScnSize( DLG_T *dlg, int xs, int ys, int yslin );
  210. extern int            DLG_lst_setup( DLG_T *dlg );
  211. extern int            DLG_lst_start( DLG_T *dlg );
  212.  
  213. extern DLGLST_LIN_T    *dlgLst_allocLin(int (*func)(), void *ptr);
  214. extern DLGLST_DAT_T    *dlgLst_allocDat(int xs, int ys, CONST char *form, ... );
  215. extern int            dlgLst_linkDat( DLGLST_LIN_T *lin, DLGLST_DAT_T *dat);
  216. extern int            DLG_lst_linkLin( DLG_T *dlg, DLGLST_LIN_T *lin );
  217. extern int            DLG_lst_unlinkLin( DLG_T *dlg, DLGLST_LIN_T *lin );
  218. extern void            DlgLst_freeLinDat( DLGLST_T *dlgLst );
  219.  
  220. extern int            Dlglst_makeLinTbl( DLGLST_T *dlgLst );
  221.  
  222. #endif
  223.